// Copyright 2007 Bret Taylor
//
// Licensed under the Apache License, Version 2.0 (the "License"); you may
// not use this file except in compliance with the License. You may obtain
// a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
// License for the specific language governing permissions and limitations
// under the License.

using System;
using System.Windows.Forms;
using System.Threading;

namespace Stickies {
  public partial class NetworkActivityDialog : ContainedForm {
    private NetworkOperation operation_;
    private Thread thread_;

    public NetworkActivityDialog(string message, NetworkOperation operation) {
      operation_ = operation;
      InitializeComponent();
      this.Icon = Media.StickiesIcon;
      this.Text = Application.ProductName;
      infoLabel_.Text = message;
    }

    private void NetworkActivityDialog_Shown(object sender, EventArgs e) {
      thread_ = new Thread(RunNetworkOperation);
      thread_.Start();
    }

    private void RunNetworkOperation() {
      try {
        operation_.Execute();
        this.DialogResult = DialogResult.OK;
      } catch (ThreadInterruptedException) {
        this.DialogResult = DialogResult.Cancel;
      }
    }

    private void cancelButton__Click(object sender, EventArgs e) {
      if (thread_ != null) {
        thread_.Interrupt();
      }
    }
  }
}
